home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / src890906.arc / AX25.H < prev    next >
C/C++ Source or Header  |  1989-08-19  |  5KB  |  133 lines

  1. #ifndef    NULLAXADDR
  2.  
  3. #include "global.h"
  4.  
  5. /* AX.25 datagram (address) sub-layer definitions */
  6.  
  7. #define    NAXROUTE    5    /* Number of hash chains in routing table */
  8. #define    MAXDIGIS    7    /* Maximum number of digipeaters */
  9. #define    ALEN        6    /* Number of chars in callsign field */
  10. #define    AXALEN        7    /* Total AX.25 address length, including SSID */
  11.  
  12. /* Internal representation of an AX.25 address */
  13. #ifndef SOCK_STREAM
  14. struct ax25_addr {
  15.     char call[ALEN];    
  16.     char ssid;
  17. };
  18. #endif
  19. #define    SSID        0x1e    /* Sub station ID */
  20. #define    REPEATED    0x80    /* Has-been-repeated bit in repeater field */
  21. #define    E        0x01    /* Address extension bit */
  22. #define    C        0x80    /* Command/response designation */
  23. #define    NULLAXADDR    (struct ax25_addr *)0
  24. /* Our AX.25 address */
  25. extern struct ax25_addr Mycall;
  26.  
  27. /* AX.25 broadcast address: "QST   -0" in shifted ASCII */
  28. extern struct ax25_addr Ax25_bdcst;
  29.  
  30. extern int Digipeat;
  31. extern int Ax25mbox;
  32.  
  33. /* Internal representation of an AX.25 header */
  34. struct ax25 {
  35.     struct ax25_addr dest;            /* Destination address */
  36.     struct ax25_addr source;        /* Source address */
  37.     struct ax25_addr digis[MAXDIGIS];    /* Digi string */
  38.     int ndigis;                /* Number of digipeaters */
  39.     int cmdrsp;                /* Command/response */
  40. };
  41.  
  42. /* C-bit stuff */
  43. #define    UNKNOWN        0
  44. #define    COMMAND        1
  45. #define    RESPONSE    2
  46.  
  47. /* AX.25 routing table entry */
  48. struct ax_route {
  49.     struct ax_route *prev;        /* Linked list pointers */
  50.     struct ax_route *next;
  51.     struct ax25_addr target;
  52.     struct ax25_addr digis[MAXDIGIS];
  53.     int ndigis;
  54.     char type;
  55. #define    AX_LOCAL    1        /* Set by local ax25 route command */
  56. #define    AX_AUTO        2        /* Set by incoming packet */
  57. };
  58. #define NULLAXR    ((struct ax_route *)0)
  59.  
  60. extern struct ax_route *Ax_routes[NAXROUTE];
  61. extern struct ax_route Ax_default;
  62.  
  63. /* AX.25 Level 3 Protocol IDs (PIDs) */
  64. #define PID_X25        0x01    /* CCITT X.25 PLP */
  65. #define    PID_SEGMENT    0x08    /* Segmentation fragment */
  66. #define PID_TEXNET    0xc3    /* TEXNET datagram protocol */
  67. #define    PID_IP        0xcc    /* ARPA Internet Protocol */
  68. #define    PID_ARP        0xcd    /* ARPA Address Resolution Protocol */
  69. #define    PID_NETROM    0xcf    /* NET/ROM */
  70. #define    PID_NO_L3    0xf0    /* No level 3 protocol */
  71.  
  72. #define    SEG_FIRST    0x80    /* First segment of a sequence */
  73. #define    SEG_REM        0x7f    /* Mask for # segments remaining */
  74.  
  75. /* Codes for the open_ax25 call */
  76. #define    AX_PASSIVE    0
  77. #define    AX_ACTIVE    1
  78. #define    AX_SERVER    2    /* Passive, clone on opening */
  79.  
  80. /* In ax25.c: */
  81. struct ax_route *ax_add __ARGS((struct ax25_addr *,int,struct ax25_addr *,int));
  82. int ax_drop __ARGS((struct ax25_addr *));
  83. struct ax_route *ax_lookup __ARGS((struct ax25_addr *));
  84. void ax_recv __ARGS((struct iface *,struct mbuf *));
  85. int ax_send __ARGS((struct mbuf *bp,struct iface *iface,int32 gateway,int prec,
  86.     int del,int tput,int rel));
  87. int ax_output __ARGS((struct iface *iface,char *dest,char *source,int16 pid,
  88.     struct mbuf *data));
  89. void axarp __ARGS((void));
  90. int sendframe __ARGS((struct ax25_cb *axp,int cmdrsp,int ctl,struct mbuf *data));
  91.  
  92. /* In ax25cmd.c: */
  93. int axnrconnect __ARGS((struct session *sp,char *fsocket,int len));
  94. void axnrhandle __ARGS((int s,void *t,void *p));
  95. void st_ax25 __ARGS((struct ax25_cb *axp));
  96.  
  97. /* In ax25user.c: */
  98. int ax25val __ARGS((struct ax25_cb *axp));
  99. int disc_ax25 __ARGS((struct ax25_cb *axp));
  100. int kick_ax25 __ARGS((struct ax25_cb *axp));
  101. struct ax25_cb *open_ax25 __ARGS((struct iface *,struct ax25_addr *,struct ax25_addr *,
  102.     int,int16,
  103.     void (*) __ARGS((struct ax25_cb *,int)),
  104.     void (*) __ARGS((struct ax25_cb *,int)),
  105.     void (*) __ARGS((struct ax25_cb *,int,int)),
  106.     int user));
  107. struct mbuf *recv_ax25 __ARGS((struct ax25_cb *axp,int16 cnt));
  108. int reset_ax25 __ARGS((struct ax25_cb *axp));
  109. int send_ax25 __ARGS((struct ax25_cb *axp,struct mbuf *bp,int pid));
  110.  
  111. /* In ax25subr.c: */
  112. int addreq __ARGS((struct ax25_addr *a,struct ax25_addr *b));
  113. int atohax25 __ARGS((struct ax25 *hdr,char *hwaddr,struct ax25_addr *source));
  114. struct ax25_cb *cr_ax25 __ARGS((struct ax25_addr *addr));
  115. void del_ax25 __ARGS((struct ax25_cb *axp));
  116. struct ax25_cb *find_ax25 __ARGS((struct ax25_addr *));
  117. char *getaxaddr __ARGS((struct ax25_addr *ap,char *cp));
  118. struct mbuf *htonax25 __ARGS((struct ax25 *hdr,struct mbuf *data));
  119. int ntohax25 __ARGS((struct ax25 *hdr,struct mbuf **bpp));
  120. int pax25 __ARGS((char *e,struct ax25_addr *addr));
  121. int psax25 __ARGS((char *e,char *addr));
  122. char *putaxaddr __ARGS((char *cp,struct ax25_addr *ap));
  123. int setcall __ARGS((struct ax25_addr *out,char *call));
  124. int setpath __ARGS((char *out,char *in));
  125.  
  126. /* In socket.c: */
  127. void beac_input __ARGS((struct iface *iface,struct ax25_addr *src,struct mbuf *bp));
  128. void s_arcall __ARGS((struct ax25_cb *axp,int cnt));
  129. void s_ascall __ARGS((struct ax25_cb *axp,int old,int new));
  130. void s_atcall __ARGS((struct ax25_cb *axp,int cnt));
  131.  
  132. #endif    /* NULLAXADDR */
  133.